# -*- coding:utf-8 -*-
import re       # 正则使用到的模块


# 正则表达式
"""
正则表达式是一个特殊的字符序列，它能帮助你方便的检查一个字符串是否与某种模式匹配。
正则表达式使用单个字符串来描述、匹配一系列匹配某个语法规则的字符串。
正则表达式是繁琐的，但它是强大的，学会之后的应用会让你除了提高效率外，会给你带来绝对的成就感。
许多程序设计语言都支持利用正则表达式进行字符串操作。
"""


#  re模块的常用方法 (比较重要的几种)

# 前面的一个r表示字符串为非转义的原始字符串
# var1 = r"大家好\n我是张三"     # 在前面加了r，\n失去原本意义, 不在进行换行
# print(var1)


# ✨✨✨✨✨✨✨✨✨
# 🍁🍁🍁match方法
"""
# 函数语法
import re
re.match(pattern, string, flags)
1、pattern   匹配的正则表达式                 
2、string    要匹配的字符串。                 
3、flags     标志位，用于控制正则表达式的匹配方式，如：是否区分大小写，多行匹配等等。
"""

# var1 = "大家好,我是张三,我喜欢唱歌"
#
# # 从头开始尝试匹配字符串数据, 如果不是字符串的开头，则输出None
# re_one = re.match(r"张三", var1)
#
# # 使用group(num)或groups()匹配对象函数来获取匹配表达式
# re_two = re.match(r"大家好", var1).group()     # 获取到 “大家好”
# print(re_one, re_two)

# ✨✨✨✨✨✨✨✨✨


# 🪶🪶🪶🪶🪶🪶🪶🪶🪶
# 🍁🍁🍁  search 方法
"""
# re.search 扫描整个字符串并返回第一个成功的匹配。
# 函数语法：
re.search(pattern, string, flags)
1、 pattern   匹配的正则表达式          
2、 string    要匹配的字符串。                                 
3、 flags标志位，用于控制正则表达式的匹配方式，如：是否区分大小写，多行匹配等等。                                            
"""

# var2 = "大家好,我是张三,我喜欢唱歌, 我叫张三"

# 匹配成功search方法返回一个匹配的对象，否则返回None。
# re_one = re.search(r"李四", var2)

# 使用group(num)或groups()匹配对象函数来获取匹配表达式
# re_two = re.search(r"张三", var2).group()
# print(re_one, re_two)

# 🪶🪶🪶🪶🪶🪶🪶🪶🪶

# 🍁🍁🍁 match() 和 search() 的区别
"""
match()如果要匹配的表达式在开头，返回匹配的值，不在开头，则返回None。
search()如果要匹配的表达式，在字符串中，返回第一个成功的匹配, 否则返回None。
相同点：都只会返回一个值
"""


# 🥩🥩🥩🥩🥩🥩🥩🥩🥩
# 🍁🍁🍁 findall 方法
"""
在字符串中找到正则表达式所匹配的所有元素，并返回一个列表，
如果有多个匹配模式，则返回元组列表，如果没有找到匹配的，则返回空列表。
注意： match 和 search 是匹配一次 findall 匹配所有。

# 函数语法
re.findall(pattern, string, flags)
"""

var3 = "大家好,我是张三,我喜欢唱歌, 我叫张三"
re_one = re.findall(r"张三", var3)
print(re_one)

# 🥩🥩🥩🥩🥩🥩🥩🥩🥩
